import java.util.Arrays;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2023-11-27
 * Time:22:13
 */

/**
 * 贪心算法:179. 最大数
 * 中等
 * 1.2K
 * 相关企业
 * 给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
 * 注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
 * 示例 1：
 * 输入：nums = [10,2]
 * 输出："210"
 * 示例 2：
 * 输入：nums = [3,30,34,5,9]
 * 输出："9534330"
 */
public class largestNumber {
    public String largestNumber(int[] nums) {
        int n = nums.length;
        String[] strs = new String[n];
        for (int i = 0; i < n; i++) {
            strs[i] = nums[i] + "";
        }
        // 排序
        Arrays.sort(strs,(a,b)->{
            return (b + a).compareTo(a + b);
        });

        // 提取结果
        StringBuilder stringBuffer = new StringBuilder();
        for (String s:strs) {
            stringBuffer.append(s);
        }
        if (stringBuffer.charAt(0) == '0'){
            return "0";
        }
        return stringBuffer.toString();
    }
}
